perm filename CASE[X,ALS] blob
sn#082467 filedate 1974-01-20 generic text, type T, neo UTF8
00010 ⊂ State 0 from 2 on - ;
00020 IF VAL>0 THEN BEGIN
00030 STATE←2; QOLD←QQ; SUMP←MAX←VAL;
00040
00050 END;
00060
00070 ⊂ STATE 1 from 5 on + ;
00080 IF VAL<0 THEN BEGIN
00090 IF XXP<2 THEN BEGIN
00100 STATE←5; SUM←SUM+SUMP-VAL;
00110 IF MAXOLD>MAX THEN MAX←MAXOLD;
00120 END;
00130 END ELSE BEGIN
00140 SUMP←SUMP+VAL;
00150 IF SUMP>ALPHA THEN BEGIN
00160 STATE←2; SUM←0;
00170 ⊂ Decision;
00180 IF (SUMREF=SUMSAV)∧(PER>PERIOD*3%4)∧(QOLD-QSAVE>PERIOD*3%4)
00190 THEN P←1 ELSE
00200 IF (SUMOLD<SUMSAVE)∧(PER<PERIOD*3%4)
00210 THEN P←0 ELSE
00220 IF (SUMOLD>SUMSAVE)∧(PER>PERIOD*3%4)∧(SOMOLD>SUMREF%2)
00230 THEN P←2 ELSE
00240 IF (SUMOLD>SUMSAV)∧(PER>PERIOD*9%10)∧(SUMOLD>SUMMIN)
00250 THEN P←3 ELSE
00260 IF SUMOLD>SUMREF THEN P←6; ⊂ To get in step;
00270 IF PER>PERIOD*3%4 THEN BEGIN
00280 QRES[QX]←QSAVE; SUMRES[QX]←SUMOLD; SPAN[QX]←MAXOLD-MINOLD;
00290 IF QX<7 THEN QX←QX+1;
00300 P←0;
00310 END;
00320 IF PER>RERIOD*3%2 THEN BEGIN
00330 K←0;
00340 FOR I←0 STEP 1 UNTIL 7 DO
00350 IF (SUMRES[QX]>K THEN BEGIN K←SUMRES[QX]; QX←I; END;
00360 IF K>0 THEN BEGIN
00370 QSAVE←QRES[QX]; SUMSAV←SUMRES[QX]; P←7;
00380 END;
00390 END;
00400 IF P>0 THEN BEGIN
00410 ⊂ Record mark;
00420 PEEK;
00430 QREF←QSAVE; QSAVE←QOLD;
00440 SUMREF←SUMSAV; SUMSAV←SUMOLD;SUMOLD←0;
00450 WHILE (BUFT[PITX-1] LSH -15)≥(QREF-PERIOD%3) DO PITX←PITX-1;
00460 BUFT[PITX]←(QREF LSH 15)+(SUMREF LAND '77770)+(P LAND '7);
00470 PITX←PITX+1;
00480 IF STATE≠6 THEN PERIOD←(2*PERIOD+PER)%3;
00485 IF PERIOD <PERMIN THEN PERIOD←PERMIN;
00487 IF PERIOD>PERMAX THEN PERIOD←PERMAX;
00490 FOR I←0 STEP 1 UNTIL 4 DO SUMRES[I]←SPAN[I]←0;
00500 QX←0;
00510 END;
00520 END;
00530
00540 ⊂ STATE 2 from 0 on + from 1 on alpha with decision;
00550 IF VAL<0 THEN STATE←0 ELSE BEGIN
00560 SUMP←SUMP+VAL; IF VAL>MAX THEN MAX←VAL;
00570 IF VAL<MARGIN THEN QOLD←QQ-1 ELSE
00580 IF SUMP>DELTA THEN BEGIN
00590 XXM←0;
00600 STATE←3; QSAVE←QOLD; SUMSAV←SUMOLD; PER←QSAVE-QREF;
00610 END;
00620
00630 END;
00640
00650 ⊂ STATE 3 from 4 on + from 2 on delta;
00660 IF VAL<0 THEN BEGIN
00670 XXM←XXM+1;
00680 STATE←4; SUMM←MIN←VAL;
00690 END ELSE BEGIN
00700 SUMP←SUMP+VAL; IF VAL>MAX THEN MAX←VAL;
00710 END;
00720
00730 ⊂ STATE 4 from 3 on - ;
00740 IF VAL>0 THEN BEGIN
00750 IF XXM<2 THEN BEGIN
00760 STATE←3; SUMP←SUMP+VAL-SUMM;
00770 END;
00780 END ELSE BEGIN
00790 SUMM←SUMM+VAL; IF VAL<MIN THEN MIN←VAL;
00800 IF SUMM<DELTN THEN BEGIN
00810 STATE←5; SUM←SUMP-SUMM; SUMP←SUMM←0;
00820 END;
00830 END;
00840
00850 ⊂ STATE 5 from 2 on - from 4 on DELTN;
00860 IF VAL>0 THEN BEGIN
00870 STATE←1;
00880 ⊂ Prepare for decision;
00890 MAXOLD←MAX; MINOLD←MIN; SUMOLD←SUM;
00900 SUMP←MAX←VAL; QOLD←QQ;
00910 END ELSE BEGIN
00920 SUM←SUM-VAL; IF VAL<MIN THEN MIN←VAL;
00930 END;
00940 END;
00950
00960 IF (QQ-QREF>PERIOD*2)∧(SUM<DELTA) THEN BEGIN
00970 QREF←QREF+PERIOD; SUMREF←SUMMIN;
00980 BUFT[PITX]←8QREF LSH 15);
00990 PITX←PITX+1;
01000 END;
01010
01020 QQ←QQ+1;
00010
00020 PROCEDURE PEEK;
00030 BEGIN
00040
00050 OUTSTR("PITX="%CVS(PITX)&" QSAVE="&CVS(QSAVE)&" P="&CVS(P)&
00060 " "&CVS(SUMREF)&" "&CVS(SUMSAV)&" "&CVS(SUMOLD)&
00065 " "&"PERIOD="&CVS(PERIOD)&" "&CVS(PER)&CRLF);
00080 END;
00090
00100 PROCEDURE SPOR;
00110 BEGIN
00120 OUTSTR(CVS(STATE)&" ");
00130 END;